﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

/* Numero de imagen:
 
 0. quehayaqui
 1. wowicon
 2. lolicon
 3. halflifeicon
 4. counterstrikeicon
 5. serioussamicon
 6. borderlandsicon
 7. residentevilicon
 8. diabloIIicon
 9. reignofchaosicon
 10. frozenthroneicon
 11. carmageddonicon
 12. tombraidericon
 13. pesicon
 14. masseffecticon
 15. crysisicon
 
*/

namespace WindowsFormsApplication2
{
    public partial class Memotest : Form
    {
        public Memotest()
        {
            InitializeComponent();
        }

        public int puntuacion;

        public int errores;

        public int aciertos;

        public int[] valorImagen;
        
        public Button ficha_anterior = (Button)null;

        public int nro_imagen_anterior;
        
        public int[] imagenasignada = new int[30];

        public void volteartodo()
        {
            cargarimagen(0, Pos1);
            cargarimagen(0, Pos2);
            cargarimagen(0, Pos3);
            cargarimagen(0, Pos4);
            cargarimagen(0, Pos5);
            cargarimagen(0, Pos6);
            cargarimagen(0, Pos7);
            cargarimagen(0, Pos8);
            cargarimagen(0, Pos9);
            cargarimagen(0, Pos10);
            cargarimagen(0, Pos11);
            cargarimagen(0, Pos12);
            cargarimagen(0, Pos13);
            cargarimagen(0, Pos14);
            cargarimagen(0, Pos15);
            cargarimagen(0, Pos16);
            cargarimagen(0, Pos17);
            cargarimagen(0, Pos18);
            cargarimagen(0, Pos19);
            cargarimagen(0, Pos20);
            cargarimagen(0, Pos21);
            cargarimagen(0, Pos22);
            cargarimagen(0, Pos23);
            cargarimagen(0, Pos24);
            cargarimagen(0, Pos25);
            cargarimagen(0, Pos26);
            cargarimagen(0, Pos27);
            cargarimagen(0, Pos28);
            cargarimagen(0, Pos29);
            cargarimagen(0, Pos30);
        }

        public void cargarimagen(int ni, Button ficha)
        {
            if (ni == 0)
            {
                ficha.BackgroundImage = Properties.Resources.quehayaqui;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = true;
            }
            if (ni == 1)
            {
                ficha.BackgroundImage = Properties.Resources.wowicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 2)
            {
                ficha.BackgroundImage = Properties.Resources.lolicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 3)
            {
                ficha.BackgroundImage = Properties.Resources.halflifeicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 4)
            {
                ficha.BackgroundImage = Properties.Resources.counterstrikeicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 5)
            {
                ficha.BackgroundImage = Properties.Resources.serioussamicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 6)
            {
                ficha.BackgroundImage = Properties.Resources.borderlandsicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 7)
            {
                ficha.BackgroundImage = Properties.Resources.residentevilicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 8)
            {
                ficha.BackgroundImage = Properties.Resources.diabloIIicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 9)
            {
                ficha.BackgroundImage = Properties.Resources.reignofchaosicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 10)
            {
                ficha.BackgroundImage = Properties.Resources.frozenthroneicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 11)
            {
                ficha.BackgroundImage = Properties.Resources.carmageddonicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 12)
            {
                ficha.BackgroundImage = Properties.Resources.tombraidericon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 13)
            {
                ficha.BackgroundImage = Properties.Resources.pesicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 14)
            {
                ficha.BackgroundImage = Properties.Resources.masseffecticon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
            if (ni == 15)
            {
                ficha.BackgroundImage = Properties.Resources.crysisicon;
                ficha.BackgroundImageLayout = ImageLayout.Stretch;
                ficha.Enabled = false;
            }
        }

        public void asignarimagenes()
        {
            List<int> fichas = new List<int>();
            Random aleatorio = new Random();
            valorImagen = new int[30];
            int x, contador = 0;
            while (fichas.Count < 30)
            {
                x = aleatorio.Next(1, 16);
                contador = 0;
                foreach (int f in fichas)
                {
                    if (f == x)
                        contador++;
                }
                if (contador < 2)
                    fichas.Add(x);
            }

            for (int i = 0; i < 30; i++)
                valorImagen[i] = fichas[i];
        }

        public int obtenernumdeboton(Button ficha)
        {
            int n;
            n = 0;
            if (ficha == Pos1)
            {
                n = 0;
            }
            if (ficha == Pos2)
            {
                n = 1;
            }
            if (ficha == Pos3)
            {
                n = 2;
            }
            if (ficha == Pos4)
            {
                n = 3;
            }
            if (ficha == Pos5)
            {
                n = 4;
            }
            if (ficha == Pos6)
            {
                n = 5;
            }
            if (ficha == Pos7)
            {
                n = 6;
            }
            if (ficha == Pos8)
            {
                n = 7;
            }
            if (ficha == Pos9)
            {
                n = 8;
            }
            if (ficha == Pos10)
            {
                n = 9;
            }
            if (ficha == Pos11)
            {
                n = 10;
            }
            if (ficha == Pos12)
            {
                n = 11;
            }
            if (ficha == Pos13)
            {
                n = 12;
            }
            if (ficha == Pos14)
            {
                n = 13;
            }
            if (ficha == Pos15)
            {
                n = 14;
            }
            if (ficha == Pos16)
            {
                n = 15;
            }
            if (ficha == Pos17)
            {
                n = 16;
            }
            if (ficha == Pos18)
            {
                n = 17;
            }
            if (ficha == Pos19)
            {
                n = 18;
            }
            if (ficha == Pos20)
            {
                n = 19;
            }
            if (ficha == Pos21)
            {
                n = 20;
            }
            if (ficha == Pos22)
            {
                n = 21;
            }
            if (ficha == Pos23)
            {
                n = 22;
            }
            if (ficha == Pos24)
            {
                n = 23;
            }
            if (ficha == Pos25)
            {
                n = 24;
            }
            if (ficha == Pos26)
            {
                n = 25;
            }
            if (ficha == Pos27)
            {
                n = 26;
            }
            if (ficha == Pos28)
            {
                n = 27;
            }
            if (ficha == Pos29)
            {
                n = 28;
            }
            if (ficha == Pos30)
            {
                n = 29;
            }
            return n;
        }

        private void Memotest_Load(object sender, EventArgs e)
        {
            puntuacion = 0;
            aciertos = 0;
            errores = 0;
            volteartodo();
            nro_imagen_anterior = 0;
            int x;
            asignarimagenes();
            for (x = 0; x < 30;x++ )
            {
                imagenasignada[x] = valorImagen[x];
            }
            lblerrores.Text = Convert.ToString(errores);
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void nuevoJuegoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Memotest_Load(sender,e);
        }

        private void Adivinando(object sender, EventArgs e)
        {
            Button ficha_actual = (Button)sender;
            int pos;
            pos = obtenernumdeboton(ficha_actual);
            int nro_imagen_actual = imagenasignada[pos];
            cargarimagen(nro_imagen_actual, ficha_actual);

            if (nro_imagen_anterior == 0)
            {
                nro_imagen_anterior = nro_imagen_actual;
                ficha_anterior = ficha_actual;
            }
            else
            {
                if (nro_imagen_anterior == nro_imagen_actual)
                {
                    // Hubo coincidencia
                    nro_imagen_anterior = 0;
                    aciertos++;
                    if (aciertos == 15)
                    {
                        puntuacion = 1000 - (errores * 2);
                        new JuegoTerminado(puntuacion).ShowDialog();
                        //MessageBox.Show("Puntuación: "+puntuacion);
                        this.Close();
                    }
                }
                else
                {
                    // No hubo coincidencia
                    Thread.Sleep(1500);
                    cargarimagen(0, ficha_actual);
                    cargarimagen(0, ficha_anterior);
                    ficha_anterior = ficha_actual;
                    nro_imagen_anterior = 0;
                    errores++;
                    lblerrores.Text = Convert.ToString(errores);
                }
            }
        }

        private void estadísticasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            new Estadisticas_Memotest().ShowDialog();
        }
    }
}
